/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package INTERFAZ;

import CONTROLES.ControlEmpleado;
import CONTROLES.ControlSession;
import CONTROLES.ControlSucursal;
import CONTROLES.ControlUsuario;
import MODELOS.Empleado;
import MODELOS.Sucursal;
import MODELOS.Usuario;
import UTILITARIOS.Constantes;
import UTILITARIOS.Fecha;
import UTILITARIOS.Hora;
import UTILITARIOS.StringToDate;
import UTILITARIOS.UTextField;
import java.awt.*;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.Date;
import javax.swing.*;
import javax.swing.border.TitledBorder;



/**
 *
 * @author Administrador
 */
public class Sesion extends JDialog implements Propiedades {

     private JLabel lblTitulo;
    private JLabel lblEmpresa;
    private JLabel fondo;

    private JLabel lblInicio;

    private JLabel lblNombreUsuario;
    private UTextField txtUsuario;

    private JLabel lblContrasena;
    private JPasswordField txtPassword;

    private JLabel lblFechaActual;
    private UTextField fechaActual;

    private JPanel pnlButton;
    private JButton btnAccept;
    private JButton btnCancel;

    private JLabel espacio;

    private TransparentPanel pnlBackground;

    Fecha fecha = new Fecha();
    

    BorderLayout ubicacion = new BorderLayout();
    JLabel marco = new JLabel("Hola munco");
    
    public Sesion()
    {
        super(Constantes.GENERAL_PARENT," Ventana de Inicio de Sesion ");
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();
        
    }
    
    public void setProperties() {
		setLayout( new BorderLayout());
		setSize(460, 280);
		setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
		setResizable(false);
    }

    public void buildComponents()
    {
        pnlBackground = new TransparentPanel();
        
		//System.out.println(new File(".\\imagenes\\dedo.jpg").getAbsolutePath());
		ImageIcon im = new ImageIcon(new ImageIcon(getClass().getResource("/imagenes/inicio5.jpg")).getImage().getScaledInstance(450, 250, 1));
                fondo = new JLabel();
                fondo.setIcon(im);
		lblEmpresa = new JLabel();

		lblTitulo = new JLabel("NUEVA FORMA DE HACER NEGOCIOS", JLabel.CENTER);

		lblNombreUsuario = new JLabel("Nombre de usuario: ", JLabel.RIGHT);
		txtUsuario = new UTextField();

		lblContrasena = new JLabel("Contraseña: ", JLabel.RIGHT);
		txtPassword = new JPasswordField();

		lblFechaActual = new JLabel("Fecha: ", JLabel.RIGHT);
		fechaActual = new UTextField(UTextField.DATE_VALUE);

		pnlButton = new JPanel();
		btnAccept = new JButton("Aceptar", new ImageIcon());
		btnCancel = new JButton("Cancelar", new ImageIcon());

                espacio = new JLabel();

    }

    public void setPropertiesComponents() {

		pnlBackground.setLayout(new FlowLayout());
		pnlBackground.setSize(new Dimension(310,150));
		pnlBackground.setLocation(135,30);
		pnlBackground.setBorder( BorderFactory.createTitledBorder(null, "INGRESAR AL SISTEMA ", TitledBorder.CENTER, TitledBorder.DEFAULT_POSITION,getFont(),Color.WHITE) );
                pnlBackground.setForeground(Color.white);
                pnlBackground.setBackground(Color.white);

		Dimension dimLabel = new Dimension(120,20);
		Dimension dimText = new Dimension(160,20);
		Font fontLabel = new Font("Tahoma",Font.PLAIN,11);



		lblTitulo.setBounds(20,25,300, 50);
		lblTitulo.setFont( new Font("Tahoma", Font.BOLD, 16) );
                lblTitulo.setForeground(Color.BLACK);

		lblEmpresa.setBounds(50, 40, 750, 50);
		lblEmpresa.setFont( new Font("Tahoma", Font.BOLD, 12) );

		
               

		lblNombreUsuario.setPreferredSize( dimLabel );
		lblNombreUsuario.setFont(fontLabel);
                lblNombreUsuario.setForeground(Color.red);
		txtUsuario.setPreferredSize( dimText );
		txtUsuario.setMandatory(true);

		lblContrasena.setPreferredSize(dimLabel);
		lblContrasena.setFont(fontLabel);
                 lblContrasena.setForeground(Color.red);
		txtPassword.setPreferredSize(dimText);
		txtPassword.setBackground(new Color(255, 255, 230));

		lblFechaActual.setPreferredSize(dimLabel);
		lblFechaActual.setFont(fontLabel);
                 lblFechaActual.setForeground(Color.red);
		fechaActual.setPreferredSize(dimText);
		fechaActual.setEnabled(false);
		fechaActual.setText(fecha.getFecha());
		fechaActual.setDisabledTextColor(Color.BLUE);

                espacio.setPreferredSize(dimLabel);

		pnlButton.setPreferredSize( new Dimension(250,25) );
		btnAccept.setPreferredSize(new Dimension(110,20));
		btnCancel.setPreferredSize(new Dimension(110,20));

		pnlButton.setOpaque(false);

		btnAccept.setToolTipText("Ingresar");
                btnAccept.setForeground(Color.BLACK);
		btnCancel.setToolTipText("Cancelar");
                 btnCancel.setForeground(Color.BLACK);

		btnAccept.setMnemonic('a');
		btnCancel.setMnemonic('c');


	}

    public void addComponents()
    {

                pnlBackground.add(lblNombreUsuario);
		pnlBackground.add(txtUsuario);

		pnlBackground.add(lblContrasena);
		pnlBackground.add(txtPassword);

		pnlBackground.add(lblFechaActual);
		pnlBackground.add(fechaActual);

		pnlButton.add(btnAccept);
		pnlButton.add(btnCancel);

		pnlBackground.add(pnlButton);
                pnlBackground.add(espacio);
		pnlBackground.add(lblTitulo);
		add(lblEmpresa);
		add(pnlBackground);

		add(fondo,BorderLayout.CENTER);

    }

    public void addEvents() {
		btnAccept.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				ingresarSistema();
			}
                        
		});

		btnCancel.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema NFN INVERSIONES ", "Advertencia", JOptionPane.INFORMATION_MESSAGE);
                                System.exit(0);
			}
		});



		addWindowListener( new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
				JOptionPane.showMessageDialog(null, "Gracias por utilizar el sistema NFN INVERSIONES ", "Advertencia", JOptionPane.INFORMATION_MESSAGE);
                                System.exit(0);
                        }
		});

		KeyAdapter keyEvent = new KeyAdapter(){
			@Override
			public void keyPressed(KeyEvent e) {
				if( e.getKeyChar() == KeyEvent.VK_ENTER )
                                    ingresarSistema();
                                    
					
			}
		};

		
		txtUsuario.addKeyListener(keyEvent);
		txtPassword.addKeyListener(keyEvent);
		
	}

    public void entrar(Usuario usuario)
    {
        ControlEmpleado emp = new ControlEmpleado();
        ControlSucursal conSuc = new ControlSucursal();
        Empleado e = emp.dameEmpleado(usuario.getIdEmpleado());
        String nombre = e.getNombreEmpleado()+ " "+e.getApellidoEmp();
        Sucursal sucursal = conSuc.obtenerSucursal(e.getIdSucursal());

        dispose();
        Bienvenida bien = new Bienvenida(e,usuario,sucursal);
        System.out.println("tipo = " + usuario.getTipoUsuario());
        
        bien.setTipoUsuario(usuario.getTipoUsuario());
        bien.setUsuario(usuario.getNombreUsuario());              

        bien.setVisible(true);                    
    }

    class TransparentPanel extends JPanel{

            private static final long serialVersionUID = 1L;
            private float tran= 0.3f;

            @Override
            protected void paintComponent(Graphics g) {
                    Graphics2D g2 = (Graphics2D) g;
                    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
                    AlphaComposite old = (AlphaComposite) g2.getComposite();
                    g2.setComposite(AlphaComposite.SrcOver.derive(getTran()));
                    super.paintComponent(g);
                    g2.setComposite(old);
            }

            public float getTran() {
                    return tran;
            }

            public void setTran(float tran) {
                    this.tran = tran;
            }
	}

    public String getFechaActual() {
        return fechaActual.getText();
    }


    public void setFechaActual(String fechaActual) {
        this.fechaActual.setText(fechaActual);
    }

    public String getTxtPassword() {
        return txtPassword.getText();
    }

    public void setTxtPassword(JPasswordField txtPassword) {
        this.txtPassword = txtPassword;
    }

    public String getTxtUsuario() {
        return txtUsuario.getText();
    }

    public void setTxtUsuario(String txtUsuario) {
        this.txtUsuario.setText(txtUsuario);
    }

   
       
        

    public void ingresarSistema()
    {
        Hora hora = new Hora();
        ControlSession sesion = new ControlSession();
        ControlUsuario cont = new ControlUsuario();
     
        StringToDate to = new StringToDate();

        boolean res = sesion.estaRegistrado(getTxtUsuario(), getTxtPassword());
        if(res==true){
            Usuario usu = sesion.UsuarioRegistrado(getTxtUsuario(), getTxtPassword());
          
            

            
            Date fechaUltimo= to.convertir(getFechaActual());

            System.out.println("id del Tipo de  Usuario = " + usu.getTipoUsuario());

           
            sesion.guardarUltimaSesion(usu, fechaUltimo,hora.getHoraTime());
           

            entrar(usu);
        }else{
            JOptionPane.showMessageDialog(null, "El Usuario no esta habilitado o la Contraseña no es válida ");
        }
    }





    public static void main(String[] args) {
		Sesion se = new Sesion();
 
                se.setVisible(true);


	}



}
